/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Ventas;

import Productos.MProducto;
import bdControlador.BdControlador;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author alrojas
 */
public class MVenta {
    
    public static boolean agregar(Venta venta) throws ClassNotFoundException, SQLException{
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        DefaultTableModel data = venta.getData();
        
        boolean resultado = true;
        
        estado.execute("INSERT INTO venta_cabecera (maquina,usuario,cliente,precio_total,tipo_documento,nro_documento,vale) VALUES ('" + venta.getMaquina() + "', '" +  venta.getUsuario() + "', '" + venta.getCliente() + "', '" + String.valueOf(venta.getMonto())  + "','"+ String.valueOf(venta.getTipoDocumento()) + "','" + venta.getNroDocumento() + "','" + venta.getVale() + "');");
        ResultSet consulta = estado.executeQuery("SELECT MAX(codigo) FROM venta_cabecera");
        
        String venta_codigo = "";
        if(consulta.next()){
            venta_codigo = consulta.getString(1);
        }
        
        for(int i = 0; i < data.getRowCount(); i++){
            estado.execute("INSERT INTO venta_detalle (venta,producto,cantidad,monto) VALUES ('" + venta_codigo + "', '" + data.getValueAt(i,0) + "', '" + data.getValueAt(i,3) + "', '" + data.getValueAt(i,5) + "');");          
            
            MProducto.decrementar(Integer.valueOf(data.getValueAt(i,0).toString()),Integer.valueOf(data.getValueAt(i,3).toString()));
            
        }
        
        BdControlador.liberarConexion(conexion);
        
        return resultado;
    }
    
    public static Vector<String> dameUno(int codigo) throws SQLException, ClassNotFoundException{
        
        Vector<String> producto = new Vector<String>();
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        ResultSet consulta = estado.executeQuery("SELECT * FROM productos WHERE codigo=" + codigo);
        
        if (consulta.next()){
           
           producto.add(consulta.getString(1));
           producto.add(consulta.getString(3));
           producto.add(consulta.getString(11));
           producto.add("1");
           producto.add(consulta.getString(10));
           producto.add(consulta.getString(10));
            
        }
        BdControlador.liberarConexion(conexion);
         
        return producto;
    } 
    
    public static String dameUltimo() throws SQLException, ClassNotFoundException{
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        ResultSet consulta = estado.executeQuery("SELECT MAX(codigo) FROM venta_cabecera");
        
        String venta_codigo = "";
        if(consulta.next()){
            venta_codigo = consulta.getString(1);
        }
        
        return venta_codigo;
    }
    
    public static Vector< Vector < String > > dameTodo() throws SQLException, ClassNotFoundException{
        
        Vector <Vector < String > > ventas = new Vector < Vector < String > >();
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        ResultSet consulta = estado.executeQuery("SELECT venta_cabecera.codigo,CONCAT(clientes.pNombre,' ',clientes.pApellido,' ',clientes.sApellido) AS cliente,precio_total,fecha FROM venta_cabecera,clientes WHERE venta_cabecera.cliente = clientes.codigo ORDER BY fecha DESC");
        
        while(consulta.next()){
            Vector fila = new Vector(); 
            fila.add(consulta.getString(1));
            fila.add(consulta.getString(2));
            fila.add(consulta.getString(3));
            fila.add(consulta.getString(4));
            ventas.add(fila);
        }
        BdControlador.liberarConexion(conexion);
        
        return ventas;
    }
    
    public static Vector < Vector < String > > dameProductos(int venta) throws SQLException, ClassNotFoundException{
        
        Vector < Vector < String > > productos = new Vector < Vector < String > >();
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        ResultSet consulta = estado.executeQuery("SELECT venta_detalle.producto as codigo,productos.nombre_comercial AS producto,cantidad,monto FROM venta_detalle,productos WHERE venta_detalle.venta=" + String.valueOf(venta) + " AND venta_detalle.producto=productos.codigo");
        
        while(consulta.next()){
            
            String cantidad = consulta.getString(3);
            String total = consulta.getString(4);
            String precio = String.valueOf(Float.valueOf(total) / Float.valueOf(cantidad));
            Vector fila = new Vector(); 
            fila.add(consulta.getString(1));
            fila.add(consulta.getString(2));
            fila.add(cantidad);
            fila.add(precio);
            fila.add(total);
            productos.add(fila);
        }
        BdControlador.liberarConexion(conexion);
        
        return productos;
    }
    
        
    public static Vector < String > dameInfo(int codigo) throws SQLException, ClassNotFoundException{
        
        Vector < String > info = new Vector <String>();
        
        Connection conexion = BdControlador.establecerConexion();
        Statement estado = conexion.createStatement();
        
        System.out.println("SELECT clientes.codigo,CONCAT(clientes.pNombre,' ',clientes.pApellido,' ',clientes.sApellido) AS cliente, venta_cabecera.tipo_documento, venta_cabecera.nro_documento, venta_cabecera.precio_total, venta_cabecera.vale FROM clientes,venta_cabecera WHERE venta_cabecera.codigo=" + String.valueOf(codigo) + " AND venta_cabecera.cliente=clientes.codigo");
        ResultSet consulta = estado.executeQuery("SELECT clientes.codigo,CONCAT(clientes.pNombre,' ',clientes.pApellido,' ',clientes.sApellido) AS cliente, venta_cabecera.tipo_documento, venta_cabecera.nro_documento, venta_cabecera.precio_total, venta_cabecera.vale FROM clientes,venta_cabecera WHERE venta_cabecera.codigo=" + String.valueOf(codigo) + " AND venta_cabecera.cliente=clientes.codigo");

        if(consulta.next()){
            info.add(consulta.getString(1));
            info.add(consulta.getString(2));
            info.add(consulta.getString(3));
            info.add(consulta.getString(4));
            info.add(consulta.getString(5));
            info.add(consulta.getString(6));
        }
        
        BdControlador.liberarConexion(conexion);
        
        return info;

    }
    
    
    
}
